package com.csproj.basic.repository;

import com.csproj.basic.domain.Site;
import com.csproj.basic.repository.custom.SiteRepositoryCustom;
import com.sun.org.apache.xpath.internal.operations.Bool;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Set;


/**
 * TODO dao方法只负责查询数据库，不含任何业务逻辑
 * TODO 数据库的方法名命名很重要，避免相同功能的语句写重复：1、需要接收的参数加在by后，用and或or链接；2、必须写全
 */
@SuppressWarnings("unused")
@Repository
public interface SiteRepository extends JpaRepository<Site,String>,SiteRepositoryCustom {

    /**
     * 根据ids查询机构信息
     * @author LM
     * @date   2017-12-04
     * @param ids
     * @return
     */
    @Query(" from Site where deletedFlag = 0 and id in (?1) ")
    List<Site> findByIds(String[] ids);


    /**
     * 根据ID删除数据
     * @author LM
     * @date   2017-12-04
     * @param id 机构id
     */
    @Modifying
    @Query("UPDATE Site SET status = ?2 where id = ?1")
    void updateStatus(String id, Integer status);

    /**
     * 根据ID删除数据
     * @author LM
     * @date   2017-12-04
     * @param id 机构id
     */
    @Query(" from Site where deletedFlag = 0 and id = ?1")
    Site findById(String id);

    /**
     * 根据状态查询数量
     * @return
     */
    @Query( " FROM Site  where enableFlag = 1  and deletedFlag = 0 " )
    List<Site> findByEnabled();

    /**
     * findByName
     * @param name
     * @return
     */
    Site findFirstBySiteNameAndDeletedFlagIsFalse(String name);

    /**
     * 根据机构ids，批量删除机构信息
     * @param ids
     */
    @Modifying
    @Query(" update Site set deletedFlag = 1 where id in (?1) ")
    void deleteIds(String[] ids);

    @Query(" from Site where siteName in ?1")
    List<Site> findByNames(Set<String> sitenames);
}
